﻿namespace est11
{
    internal class class11
    {
        #region     知识点一   基本概念
        //递归函数就是 让函数自己调用自己
        //static void Fun()
        //{
        //    if(false)
        //    {
        //        return;
        //    }
        //    Fun();
        //}

        //一个正确的递归函数
        //1.必须有结束调用的条件
        //2.用于条件判断的 这个条件 必须改变 能够达到停止的目的
        #endregion

        #region     知识点二   实例
        //用递归函数打印出0到10
        static void Fun(int a)
        {
            //第四步：完成要求返回
            if (a > 10)
            {
                return;
            }
            //第二步：完成要求 打印
            Console.WriteLine(a);
            //第三步：完成一个 递归的变化 作为我们条件的判断
            a++;
            //第一步：构造了一个递归  
            Fun(a);
        }
        #endregion

        #region     作业
        //1.传入一个值，递归求该值的阶乘 并返回
        //5! = 12345
        static int Sum1(int a)
        {
            
            if (a == 0 || a == 1)
            {
                return 1;
            }
            else
            {
                return a * Sum1(a - 1);
                    
            }
        }

        

        #endregion
        static void Main(string[] args)
        {
            Console.WriteLine("递归函数");
            Fun(0);
            Console.WriteLine("*****************************************************");

            Console.WriteLine(Sum1(7));
            //递归函数的话，直接返回公式就好了
        }
    }
}
